/*
* 折叠tokens，将#和/折叠起来
* */
export default function nestTokens(tokens) {
  // 结果数组
  let nestedTokens = []
  // 栈结构，存放小tokens，
  let sections = []
  // 收集器，引用类型值
  let collector = nestedTokens

  for(let i = 0; i < tokens.length; i++) {
    let token = tokens[i]

    switch (token[0]) {
      case '#':
        // 收集器中放入token
        collector.push(token)
        // 入栈
        sections.push(token)
        // 给token添加下标为2的项，并且让收集器指向它
        collector = token[2] = []
        break
      case '/':
        // 出栈
        sections.pop()
        collector = sections.length > 0 ? sections[sections.length - 1][2] : nestedTokens
        break
      default:
        collector.push(token)
    }
  }

  return nestedTokens
}